package destiny.神煞;

import java.util.ArrayList;
import java.util.List;

import destiny.预测.干支数;

public abstract class 用神煞 {
	private static List<Class<? extends 用神煞>> classes = new ArrayList<Class<? extends 用神煞>>();
	private static List<用神煞> 神煞 = new ArrayList<用神煞>();

	protected static void register(Class<? extends 用神煞> clazz) {
		classes.add(clazz);
	}

	static {
		register(天德贵人.class);
		register(月德贵人.class);
		register(天乙贵人.class);
		register(禄神.class);
		register(文昌.class);
		register(华盖.class);
		register(将星.class);
		register(驿马.class);
		register(金舆.class);
		register(天医.class);
		register(羊刃煞.class);
		register(六甲空亡.class);
		register(桃花.class);
		register(阴阳差错日.class);
		register(天罗地网.class);
		register(劫煞.class);
	}

	public static void 定神煞(干支数[] 柱数, int 年序, int 月序, int 日序)
			throws InstantiationException, IllegalAccessException {
		if (神煞.isEmpty()) {
			for (Class<? extends 用神煞> clazz : classes) {
				神煞.add(clazz.newInstance());
			}
		}
		for (用神煞 yong : 神煞) {
			yong.神煞(柱数, 年序, 月序, 日序);
		}
	}

	protected abstract void 神煞(干支数[] 柱数, int 年序, int 月序, int 日序);

	public abstract String getName();

	protected String message = "";

	public String getMessage() {
		return message;
	}
}
